{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(<class 'str'>, <class 'NoneType'>, <class 'NoneType'>)\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "from typing import Generator, get_origin, get_args\n",
    "import collections\n",
    "import inspect\n",
    "\n",
    "def example_generator() -> Generator[str, None, None]:\n",
    "    yield \"hello\"\n",
    "    yield \"world\"\n",
    "\n",
    "def is_instance_of_generator(f):\n",
    "    from typing import Generator, get_origin, get_args\n",
    "    import collections\n",
    "    import inspect\n",
    "    v = inspect.signature(f).return_annotation\n",
    "    if get_origin(v) is collections.abc.Generator:\n",
    "        args = get_args(v)\n",
    "        if args == (str, type(None), type(None)):\n",
    "            return True\n",
    "    return False\n",
    "\n",
    "v = inspect.signature(example_generator).return_annotation\n",
    "if get_origin(v) is collections.abc.Generator:\n",
    "    args = get_args(v)\n",
    "    print(args)\n",
    "    if args == (str, type(None), type(None)):\n",
    "        print(True)\n",
    "    else:\n",
    "        print(False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m2024-07-30 12:53:44.536\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mbyzerllm.utils.connect_ray\u001b[0m:\u001b[36mconnect_cluster\u001b[0m:\u001b[36m48\u001b[0m - \u001b[1mJDK 21 will be used (/Users/allwefantasy/.auto-coder/jdk-21.0.2.jdk/Contents/Home)...\u001b[0m\n",
      "2024-07-30 12:53:44,597\tINFO worker.py:1564 -- Connecting to existing Ray cluster at address: 127.0.0.1:6379...\n",
      "2024-07-30 12:53:44,598\tINFO worker.py:1582 -- Calling ray.init() again after it has already been called.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在一个风和\n",
      "和煦的午后，小镇上的图书馆里，一个名叫艾米的女孩发现了一本古老的书籍。书页泛黄，封面上镶嵌着一颗闪烁的宝石。艾米轻轻翻开书页，突然，一股神秘的力量将她吸入了书中的世界。她发现自己置身于一个充满魔法和奇幻的王国。在那里，她结识了勇敢的骑士和智慧的巫师，他们一起踏上了一场寻找失落的王冠的冒险之旅。最终，艾米用她的勇气和智慧帮助王国恢复了和平，而那颗镶嵌在书封面上的宝石，正是王冠上缺失的那一颗。当艾米回到现实世界时，她发现自己手中的书已经变成了一个精美的王冠，而她的心中充满了无尽的冒险和希望。"
     ]
    }
   ],
   "source": [
    "import byzerllm\n",
    "import json\n",
    "import base64\n",
    "from typing import Generator\n",
    "\n",
    "llm = byzerllm.ByzerLLM.from_default_model(\"deepseek_chat\")\n",
    "\n",
    "@byzerllm.prompt()\n",
    "def tell_story() -> Generator[str, None, None]:\n",
    "    '''\n",
    "    给我讲一个一百多字的故事\n",
    "    '''\n",
    "\n",
    "v = tell_story.with_llm(llm).run()    \n",
    "for i in v:\n",
    "    print(i, end=\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m2024-07-30 12:34:02.522\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mbyzerllm.utils.connect_ray\u001b[0m:\u001b[36mconnect_cluster\u001b[0m:\u001b[36m48\u001b[0m - \u001b[1mJDK 21 will be used (/Users/allwefantasy/.auto-coder/jdk-21.0.2.jdk/Contents/Home)...\u001b[0m\n",
      "2024-07-30 12:34:02,584\tINFO worker.py:1564 -- Connecting to existing Ray cluster at address: 127.0.0.1:6379...\n",
      "2024-07-30 12:34:02,585\tINFO worker.py:1582 -- Calling ray.init() again after it has already been called.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<RESPONSE>在一个风雨交加的夜晚，老约翰独自在家。突然，电话铃响起，他颤抖地接起，听到一个陌生声音说：“你的时间不多了。”老约翰心跳加速，他挂断电话，决定检查门窗是否锁好。当他走到后门时，发现门微微开着。他紧张地推开门，外面一片漆黑。突然，一道闪电划过，照亮了一个模糊的身影站在院子里。老约翰惊恐"
     ]
    }
   ],
   "source": [
    "import byzerllm\n",
    "import json\n",
    "import base64\n",
    "from typing import Generator\n",
    "\n",
    "llm = byzerllm.ByzerLLM.from_default_model(\"deepseek_chat\")\n",
    "\n",
    "@byzerllm.prompt()\n",
    "def tell_story() -> Generator[str, None, None]:\n",
    "    \"\"\"\n",
    "    讲一个100字的故事。    \n",
    "    \"\"\"\n",
    "s = (\n",
    "    tell_story.with_llm(llm)\n",
    "    .with_response_markers()\n",
    "    .options({\"llm_config\": {\"max_length\": 10}})\n",
    "    .run()\n",
    ")\n",
    "k = \"\"\n",
    "for i in s:\n",
    "    k += i[0]\n",
    "    print(i[0], end=\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m2024-07-30 12:36:43.464\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mbyzerllm.utils.connect_ray\u001b[0m:\u001b[36mconnect_cluster\u001b[0m:\u001b[36m48\u001b[0m - \u001b[1mJDK 21 will be used (/Users/allwefantasy/.auto-coder/jdk-21.0.2.jdk/Contents/Home)...\u001b[0m\n",
      "2024-07-30 12:36:43,541\tINFO worker.py:1564 -- Connecting to existing Ray cluster at address: 127.0.0.1:6379...\n",
      "2024-07-30 12:36:43,543\tINFO worker.py:1582 -- Calling ray.init() again after it has already been called.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在一个在一个风在一个风和在一个风和日在一个风和日丽的在一个风和日丽的午后在一个风和日丽的午后，在一个风和日丽的午后，小在一个风和日丽的午后，小猫在一个风和日丽的午后，小猫米在一个风和日丽的午后，小猫米咪在一个风和日丽的午后，小猫米咪在在一个风和日丽的午后，小猫米咪在花园在一个风和日丽的午后，小猫米咪在花园里在一个风和日丽的午后，小猫米咪在花园里追逐在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，心里在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，心里暖在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，心里暖洋洋在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，心里暖洋洋的在一个风和日丽的午后，小猫米咪在花园里追逐蝴蝶。突然，它发现了一只闪闪发光的戒指，藏在花丛中。米咪好奇地用爪子拨弄，戒指滑到了它的脖子上。就在这时，花园的门开了，一位老妇人走进来，微笑着说：“我的戒指终于找到了，谢谢你，小英雄。”米咪害羞地喵了一声，心里暖洋洋的。"
     ]
    }
   ],
   "source": [
    "import byzerllm\n",
    "\n",
    "llm = byzerllm.ByzerLLM.from_default_model(\"deepseek_chat\")\n",
    "\n",
    "v = llm.stream_chat_oai(conversations=[{\n",
    "    \"role\":\"user\",\n",
    "    \"content\":\"讲一个100字的故事\"\n",
    "}])\n",
    "\n",
    "for s  in v:\n",
    "    print(s[0], end=\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "152"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(k)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "byzerllm",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
